home *** CD-ROM | disk | FTP | other *** search
/ PC World Interactive 7 / PC World Interactive 7.iso / program / asprog.EXE / CONVERT.ASM < prev    next >
Assembly Source File  |  1996-06-21  |  12KB  |  350 lines

  1. ;
  2. ;
  3. ; CONVERT v1.0 - Keytrap logfile converter
  4. ; By Dcypher (dcypher@mhv.net)
  5. ;
  6. ; Usage: CONVERT logfile outfile
  7. ;
  8. ;        logfile - Keytrap's scancode data (logfile)
  9. ;        outfile - Specify an output file name
  10. ;
  11. ;
  12. ;----------------------------------------
  13.                     ;       
  14.     .286                            ;
  15.     .model  small                   ;
  16.     .code                           ;
  17.     org     100h                    ;
  18.                     ;
  19. start:  jmp     go                      ;
  20.                     ;
  21. ;----------------------------------------
  22.                     ;
  23. inhandle        dw 0                    ;
  24. inpointH        dw 0                    ;
  25. inpointL        dw 0                    ;
  26. loaded          dw 0                    ;
  27. last            db 0                    ;
  28.                     ;
  29. outhandle       dw 0                    ;
  30. outoffset       dw 0                    ;
  31.                     ;
  32. ;----------------------------------------
  33.                     ;
  34. table   db 002h, '1'                    ; scan-code table
  35.     db 003h, '2'                    ;
  36.     db 004h, '3'                    ;
  37.     db 005h, '4'                    ;
  38.     db 006h, '5'                    ;
  39.     db 007h, '6'                    ;
  40.     db 008h, '7'                    ;
  41.     db 009h, '8'                    ;
  42.     db 00Ah, '9'                    ;
  43.     db 00Bh, '0'                    ;
  44.     ;                               ;
  45.     db 082h, '!'                    ;
  46.     db 083h, '@'                    ;
  47.     db 084h, '#'                    ;
  48.     db 085h, '$'                    ;
  49.     db 086h, '%'                    ;
  50.     db 087h, '^'                    ;
  51.     db 088h, '&'                    ;
  52.     db 089h, '*'                    ;
  53.     db 08Ah, '('                    ;
  54.     db 08Bh, ')'                    ;
  55. ;----------------------------------------                               
  56.     db 01Eh, 'a'                    ;
  57.     db 030h, 'b'                    ;
  58.     db 02Eh, 'c'                    ;
  59.     db 020h, 'd'                    ;
  60.     db 012h, 'e'                    ;
  61.     db 021h, 'f'                    ;
  62.     db 022h, 'g'                    ;
  63.     db 023h, 'h'                    ;
  64.     db 017h, 'i'                    ;
  65.     db 024h, 'j'                    ;
  66.     db 025h, 'k'                    ;
  67.     db 026h, 'l'                    ;
  68.     db 032h, 'm'                    ;
  69.     db 031h, 'n'                    ;
  70.     db 018h, 'o'                    ;
  71.     db 019h, 'p'                    ;
  72.     db 010h, 'q'                    ;
  73.     db 013h, 'r'                    ;
  74.     db 01Fh, 's'                    ;
  75.     db 014h, 't'                    ;
  76.     db 016h, 'u'                    ;
  77.     db 02Fh, 'v'                    ;
  78.     db 011h, 'w'                    ;
  79.     db 02Dh, 'x'                    ;
  80.     db 015h, 'y'                    ;
  81.     db 02Ch, 'z'                    ;
  82.     ;                               ;
  83.     db 09Eh, 'A'                    ;
  84.     db 0B0h, 'B'                    ;
  85.     db 0AEh, 'C'                    ;
  86.     db 0A0h, 'D'                    ;
  87.     db 092h, 'E'                    ;
  88.     db 0A1h, 'F'                    ;
  89.     db 0A2h, 'G'                    ;
  90.     db 0A3h, 'H'                    ;
  91.     db 097h, 'I'                    ;
  92.     db 0A4h, 'J'                    ;
  93.     db 0A5h, 'K'                    ;
  94.     db 0A6h, 'L'                    ;
  95.     db 0B2h, 'M'                    ;
  96.     db 0B1h, 'N'                    ;
  97.     db 098h, 'O'                    ;
  98.     db 099h, 'P'                    ;
  99.     db 090h, 'Q'                    ;
  100.     db 093h, 'R'                    ;
  101.     db 09Fh, 'S'                    ;
  102.     db 094h, 'T'                    ;
  103.     db 096h, 'U'                    ;
  104.     db 0AFh, 'V'                    ;
  105.     db 091h, 'W'                    ;
  106.     db 0ADh, 'X'                    ;
  107.     db 095h, 'Y'                    ;
  108.     db 0ACh, 'Z'                    ;
  109. ;----------------------------------------
  110.     db 00Ch, '-'                    ;
  111.     db 08Ch, '_'                    ;
  112.                     ;
  113.     db 00Dh, '='                    ;
  114.     db 08Dh, '+'                    ;
  115.                     ;
  116.     db 01Ah, '['                    ;
  117.     db 09Ah, '{'                    ;
  118.                     ;
  119.     db 01Bh, ']'                    ;
  120.     db 09Bh, '}'                    ;
  121.                     ;
  122.     db 027h, ';'                    ;
  123.     db 0A7h, ':'                    ;
  124.                     ;
  125.     db 028h, 027h                   ; '
  126.     db 0A8h, '"'                    ;
  127.                     ;
  128.     db 033h, ','                    ;
  129.     db 0B3h, '<'                    ;
  130.                     ;
  131.     db 034h, '.'                    ;
  132.     db 0B4h, '>'                    ;
  133.                     ;
  134.     db 035h, '/'                    ;
  135.     db 0B5h, '?'                    ;
  136.                     ;
  137.     db 02Bh, '\'                    ;
  138.     db 0ABh, '|'                    ;
  139.                     ;
  140.     db 037h, '*'                    ;
  141.     db 0B7h, '*'                    ;
  142.                     ;
  143.     db 029h, '`'                    ;
  144.     db 0A9h, '~'                    ;
  145.                     ;
  146. ;----------------------------------------
  147.                     ;
  148.     db 039h, 020h                   ; space 
  149.     db 0B9h, 020h                   ; space with shift
  150.                     ;
  151.     db 00Eh, 011h                   ; backspace
  152.     db 08Eh, 011h                   ; backspace with shift
  153.                     ;
  154.     db 01Ch, 00Ah                   ; return
  155.     db 09Ch, 00Ah                   ; return with shift
  156.                     ;
  157.     db 0                            ; End of Table
  158.                     ;
  159. ;==============================================================================
  160.                         ;
  161.  fprob: mov     ah, 9                           ;
  162.     lea     dx, ferr                        ;
  163.     int     21h                             ;
  164.     jmp     bye                             ;
  165.                         ;
  166. prtuse: mov     ah, 9                           ;
  167.     lea     dx, usage                       ;
  168.     int     21h                             ;
  169.                         ;
  170.    bye: mov     ah, 4Ch                         ;
  171.     int     21h                             ;
  172.                         ;
  173. ;------------------------------------------------
  174.                         ;
  175.     go: mov     ah, 9                           ;
  176.     lea     dx, namver                      ;
  177.     int     21h                             ;
  178.                         ;
  179.     mov     bx, 80h                         ; 
  180.     cmp     byte ptr [bx], 0                ;
  181.     je      prtuse                          ;
  182.                         ;
  183.     call    null                            ; 
  184.     call    check                           ;
  185.     jc      fprob                           ;
  186.                         ;
  187.    go1: call    ldata                           ;
  188.     call    conv                            ;
  189.     call    sdata                           ;
  190.     cmp     last, 1                         ;
  191.     jne     go1                             ;
  192.     jmp     bye                             ;
  193.                         ;
  194. ;------------------------------------------------
  195.                         ;
  196.   null: mov     bx, 81h                         ; 
  197.  null1: inc     bx                              ;
  198.     cmp     byte ptr [bx], 20h              ; 
  199.     jnz     null1                           ;
  200.     mov     byte ptr [bx], 0                ;
  201.                         ;
  202.     mov     outoffset, bx                   ;       
  203.     inc     word ptr [outoffset]            ;
  204.                         ;
  205.  null2: inc     bx                              ;
  206.     cmp     byte ptr [bx], 0Dh              ; 
  207.     jnz     null2                           ;
  208.     mov     byte ptr [bx], 0                ;
  209.     ret                                     ;
  210.                         ;
  211. ;------------------------------------------------
  212.                         ;
  213. check:  mov     ax, 3D00h                       ;
  214.     mov     dx, 82h                         ;
  215.     int     21h                             ;
  216.     jc      check2                          ;
  217.     mov     bx, ax                          ;
  218.     mov     ah, 3Eh                         ;
  219.     int     21h                             ;
  220.     jc      check2                          ;
  221.                         ;
  222.     mov     ah, 3Ch                         ;
  223.     xor     cx, cx                          ;
  224.     mov     dx, outoffset                   ;
  225.     int     21h                             ;
  226.     jc      check2                          ;
  227.     mov     bx, ax                          ;
  228.     mov     ah, 3Eh                         ;
  229.     int     21h                             ;
  230.     jc      check2                          ;
  231.                         ;
  232.     clc                                     ;
  233. check2: ret                                     ;
  234.                         ;
  235. ;------------------------------------------------
  236.                         ;
  237.  ldata: mov     ax, 3D00h                       ;
  238.     mov     dx, 82h                         ;
  239.     int     21h                             ;
  240.     mov     inhandle, ax                    ;
  241.                         ;
  242.     mov     ax, 4200h                       ;
  243.     mov     bx, inhandle                    ;
  244.     mov     cx, inpointH                    ;
  245.     mov     dx, inpointL                    ;
  246.     int     21h                             ;
  247.                         ;
  248.     mov     ah, 3Fh                         ;
  249.     mov     bx, inhandle                    ;
  250.     mov     cx, 60000                       ;
  251.     lea     dx, eof                         ;
  252.     int     21h                             ;
  253.     mov     loaded, ax                      ;
  254.     cmp     ax, 60000                       ;
  255.     je      ldata2                          ;
  256.     mov     last, 1                         ;
  257.                         ;
  258. ldata2: mov     ax, 4201h                       ;
  259.     mov     bx, inhandle                    ;
  260.     xor     cx, cx                          ;
  261.     xor     dx, dx                          ;
  262.     int     21h                             ;
  263.     mov     inpointH, dx                    ;
  264.     mov     inpointL, ax                    ;
  265.                         ;
  266.     mov     ah, 3Eh                         ;
  267.     mov     bx, inhandle                    ;
  268.     int     21h                             ;
  269.     ret                                     ;
  270.                         ;
  271. ;------------------------------------------------       
  272.                         ;
  273.   conv: mov     cx, loaded                      ;
  274.     lea     si, eof                         ;
  275.                         ;
  276.  conv1: lea     di, table                       ;
  277.                         ;
  278.     cmp     cx, 0                           ;
  279.     je      conv6                           ;
  280.                         ;
  281.     mov     al, byte ptr [si]               ;
  282.  conv2: mov     ah, byte ptr [di]               ;
  283.     cmp     ah, 0                           ;
  284.     je      conv4                           ;
  285.     cmp     ah, al                          ;
  286.     je      conv3                           ;
  287.     add     di, 2                           ;
  288.     jmp     conv2                           ;
  289.                         ;
  290.  conv3: inc     di                              ;
  291.     mov     al, byte ptr [di]               ;
  292.     mov     byte ptr [si], al               ;
  293.     dec     cx                              ;
  294.     inc     si                              ;
  295.     jmp     conv1                           ;
  296.                         ;
  297.  conv4: mov     byte ptr [si], 20h              ;
  298.     dec     cx                              ;
  299.     inc     si                              ;
  300.     jmp     conv1                           ;
  301.                         ;
  302.  conv6: ret                                     ;
  303.                         ;
  304. ;------------------------------------------------
  305.                         ;
  306. sdata:  mov     ax, 3D02h                       ;
  307.     mov     dx, outoffset                   ;
  308.     int     21h                             ;
  309.     mov     outhandle, ax                   ;
  310.                         ;
  311.     mov     ax, 4202h                       ;
  312.     mov     bx, outhandle                   ;
  313.     xor     cx, cx                          ;
  314.     xor     dx, dx                          ;
  315.     int     21h                             ;
  316.                         ;
  317.     mov     ah, 40h                         ;
  318.     mov     bx, outhandle                   ;
  319.     mov     cx, loaded                      ;
  320.     lea     dx, eof                         ;
  321.     int     21h                             ;
  322.                         ;
  323.     mov     ah, 3Eh                         ;
  324.     mov     bx, outhandle                   ;
  325.     int     21h                             ;
  326.     ret                                     ;
  327.                         ;
  328. ;------------------------------------------------------------------------------
  329.                         
  330. namver  db 10,13                                
  331.     db 'CONVERT v1.0',10,13                 
  332.     db 'Keytrap logfile converter.',10,13
  333.     db 'By Dcypher (dcypher@mhv.net)',10,13
  334.     db 10,13,'$'
  335.  
  336. usage   db 'Usage: CONVERT logfile outfile',10,13                          
  337.     db 10,13                       
  338.     db '       logfile - Keytrap',27h,'s scancode data.',10,13
  339.     db '       outfile - Specify an output file name.',10,13
  340.     db 10,13,'$'
  341.  
  342. ferr    db 'WARNING: Problem with one of the files.',10,13
  343.     db 10,13,'$'
  344.  
  345. ;------------------------------------------------------------------------------
  346.  
  347. eof     db 0
  348.     end    start
  349.  
  350.